package jwcb.admin.server.user.service;

import jwcb.admin.api.user.domain.dto.AppUserDTO;
import jwcb.admin.api.user.domain.dto.AppUserListReqDTO;
import jwcb.admin.api.user.domain.dto.UserEditReqDTO;
import jwcb.javapjframework.common.domain.domain.dto.BasePageDTO;

import java.util.List;

/**
 * C端用户服务接口
 */
public interface IAppUserService {

    /**
     * 根据微信注册用户
     * @param openId 用户微信ID
     * @return C端用户DTO
     */
    AppUserDTO registerByOpenId(String openId);


    /**
     * 根据OpenId查询用户
     * @param openId c端用户信息
     * @return openId
     */
    AppUserDTO findByOpenId(String openId);


    /**
     * 根据手机号码注册用户
     * @param phone 手机号码
     * @return C端用户DTO
     */
    AppUserDTO registerByPhone(String phone);



    /**
     * 根据phone查询用户
     * @param phone c端用户信息
     * @return 用户信息
     */
    AppUserDTO findByPhone(String phone);



    /**
     * 编辑C端用户
     * @param userEditReqDTO C端用户DTO
     * @return void
     */
    void edit(UserEditReqDTO userEditReqDTO);


    /**
     * 查询C端用户
     * @param appUserListReqDTO 查询C端用户DTO
     * @return C端用户分页结果
     */
    BasePageDTO<AppUserDTO> getUserList(AppUserListReqDTO appUserListReqDTO);

    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return C端用户DTO
     */
    AppUserDTO findById(Long userId);


    /**
     * 根据用户ID列表获取用户列表信息
     * @param userIds 用户ID列表
     * @return C端用户DTO列表
     */
    List<AppUserDTO> getUserList(List<Long> userIds);
}
